package com.spark.modules.system.entity;

import com.baomidou.mybatisplus.annotation.OrderBy;
import com.baomidou.mybatisplus.annotation.TableName;
import com.spark.common.annotation.Dict;
import com.spark.common.annotation.query.Query;
import com.spark.common.core.entity.BaseTreeEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
* 系统权限菜单
*
* @author LYCHEE
* @date 2025/02/18 14:07
*/
@Data
@TableName("sys_permission")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class SysPermission extends BaseTreeEntity<SysPermission> {

    /**
     * 菜单类型
     *  : 0目录 1菜单 2按钮
     */
    @Query
    @NotNull(message = "菜单类型不能为空")
    @Dict(dictCode = "menu_type")
    private java.lang.Integer type;

    /**
     * 名称
     */
    @NotBlank(message = "菜单名称不能为空")
    private java.lang.String name;

    /**
     * 菜单图标
     */
    private java.lang.String icon;

    /**
     * 路由地址
     */
    private java.lang.String routePath;

    /**
     * 组件路径
     */
    private java.lang.String componentPath;

    /**
     * 权限标识
     */
    private java.lang.String perms;

    /**
     * 路由参数
     */
    private java.lang.String query;

    /**
     * 排序
     */
    @OrderBy(asc = true, sort = 1)
    private java.lang.Integer sortRank;

    /**
     * 备注
     */
    private java.lang.String remark;

    /**
     * 是否缓存
     *  : 0是 1否
     */
    private java.lang.Integer isKeepAlive;

    /**
     * 是否隐藏
     *  : 0显示 1隐藏
     */
    private java.lang.Integer isHideInMenu;

    /**
     * 是否在标签页中隐藏
     *  : 0是 1否
     */
    private java.lang.Integer isHideInTab;

    /**
     * 是否在面包屑中隐藏
     *  : 0是 1否
     */
    private java.lang.Integer isHideInBreadcrumb;

    /**
     * 子页面是否在菜单中隐藏
     *  : 0是 1否
     */
    private java.lang.Integer isHideChildrenInMenu;

    /**
     * 是否开启徽标
     *  : 0是 1否
     */
    private java.lang.Integer isBadge;

    /**
     * 徽标的值
     *  : 支持文本和API
     */
    private java.lang.String badgeValue;

    /**
     * 徽标类型
     *  : dot 为小红点，normal 为文本
     */
    private java.lang.String badgeType;

    /**
     * 徽标颜色
     *  : 'default' | 'destructive' | 'primary' | 'success' | 'warning' | string
     */
    private java.lang.String badgeVariants;

    /**
     * 是否固定标签页
     *  : 0是 1否
     */
    private java.lang.Integer isAffixTab;

    /**
     * 固定标签页的排序
     */
    private java.lang.Integer affixTabOrder;

    /**
     * 是否外链
     *  : 0是 1否
     */
    private java.lang.Integer isLink;

    /**
     * 连接打开方式
     *  : 0外部 1内部
     */
    private java.lang.Integer linkOpenWay;

    /**
     * 外链地址
     */
    private java.lang.String link;

    /**
     * 菜单权限字符
     */
    private java.lang.String authorityStr;

    /**
     * 配置页面在菜单可以看到，但是访问会被重定向到403。
     *  : 0是 1否
     */
    private java.lang.Integer isMenuVisibleWithForbidden;

    /**
     * 新窗口打开页面
     *  : 0是 1否
     */
    private java.lang.Integer openInNewWindow;

}
